home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / CRS / crs47.d81 / cbmhck4a.sfx / cbmhack.4-2 < prev   
Text File  |  1990-02-12  |  36KB  |  705 lines

  1.  
  2.   64 ├ONSIDERATIONS
  3.   -----------------
  4.   ╘HE 64 WILL HAVE FREE MEMORY IN THE FOLLOWING AREAS: $0800-$A000, AND
  5.   $C000-$CFFF. ╚OWEVER, IF WE DISABLE THE ┬ASIC ╥OM WE CAN HAVE THE WHOLE
  6.   AREA FROM $0800-$CFFF FREE FOR OUR PROGRAM. ┬ECAUSE WE DON'T NEED THE
  7.   ┬ASIC ╥OM WE WILL DO JUST THAT (IN THE LISTING NOW WE CURRENTLY WON'T BUT 
  8.   IT WILL BE DONE IN A FUTURE ISSUE). ╘HEREFORE HAVING THE CHARACTER SET
  9.   AT $3000-$5000, THE MUSIC DATA AT $5000-$8000, THE PROGRAM WILL HAVE THE
  10.  
  11.   AREA FREE FROM $8000-$CFFF. $0800-$3000 WILL BE AVAILABLE IF NEEDED FOR
  12.   ROUTINES WHO NEED TEMPORARY STORAGE. 
  13.  
  14.   ╘EMPORARY ╙TORAGE IS GOING TO BE DEFINED AS FOLLOWS. ┼ACH ROUTINE THAT NEEDS
  15.   TEMPORARY STORAGE WILL BE ASSIGNED A "LEVEL" NUMBER. ╘HE LOWER LEVELS WILL
  16.   BE ASSIGNED LEVEL 1 ON UP TO LEVEL 3. ╘HE RANGE $0800-$3000 WILL BE 
  17.   BROKEN DOWN INTO THE FOLLOWING SUB-RANGES.
  18.  
  19.        ╠EVEL 1: $0800-$1000
  20.        ╠EVEL 2: $1000-$1800
  21.        ╠EVEL 3: $1800-$3000
  22.   
  23.   ╘HIS WAY WHEN WRITING THE SUB-ROUTINES WE CAN BE ASSURED THAT A SECTION OF
  24.   MEMORY IS NOT OVERWRITTEN BY A SUBROUTINE WE CALL. ╫HEN WE ACTUALLY START
  25.   PROGRAMMING WE'LL DECIDE WHERE IN EACH SUB-RANGE THE ROUTINE WILL HAVE 
  26.   ACCESS TO.
  27.  
  28.   128 ├ONSIDERATIONS
  29.   ------------------
  30.   ╘HE 128 HAS TWO "BANKS" OF 64K EACH. ╬ORMALLY FOR LARGE PROGRAMS WE WOULD 
  31.   THINK ABOUT USING BOTH BANKS - (FROM THE IDEA: ╚EY! - ╫E GOT IT, WHY NOT
  32.   FLAUNT IT?) BUT WE WON'T BE USING BOTH BANKS.
  33.  
  34.   ╞REE MEMORY ON THE ├128 TYPICALLY CONSISTS OF THE RANGE $0400-$09FF
  35.   (WHERE WE'LL BE OVERWRITING THE 40 COLUMN SCREEN (WHICH WE'RE GONNA BLANK
  36.   ANYWAY) AND THE ┬ASIC RUN-TIME STACK.) ┴LSO THE AREA FROM $0B00-$0FFF
  37.   IS FREE (OVERWRITING THE TAPE AREA, THE RS-232 BUFFERS,L AND THE SPRITE
  38.   DEFINITION AREA). ┴LSO $1300-$CFFF WILL BE FREE. 
  39.  
  40.   ╬OW, THE ├=128 HAS DIFFERENT MEMORY MAPS IT CAN CONFIGURE ITSELF TO - 
  41.   ┬ANK 15 IS THE STANDARD MODE UNDER MOST BASIC PROGRAMS AND ALLOWS THE
  42.   PROGRAMMER TO DIRECTLY "SYS" TO CALLS. ╘HE ══╒ (MEMORY MANAGEMENT UNIT -
  43.   THE CHIP THAT DOES EVERYTHING) SEES MEMORY IN A SLIGHTLY DIFFERANT WAY
  44.   THAN FROM BASIC. ╫E'LL COVER IT IN MORE DETAIL WHEN WE EXAMINE THE MEM_INIT
  45.   ROUTINE. ╞OR NOW, WE'RE JUST GONNA SET UP IN THE PROGRAM AND NOT IN THE
  46.   CODING SEGMENTS. ╘HE EXPLANATION OF WHAT WE'RE DOING WILL BE "REVEALED"
  47.   IN A FUTURE ISSUE. 
  48.  
  49.   ╫E WILL USE ┬ANK 0 OF MEMORY AND FROM $1300+ WILL BE THE PROGRAM. ╘HE RANGES
  50.   OF $0400-$09FF AND $0B00-$0FFF WILL BE USED IN A SIMILAIR MANNAR AS THE ├64
  51.   RANGES WERE FOR ╘EMPORARY ╙TORAGE. ╫E WILL ALSO HAVE THE ╔/╧ SECTION FROM
  52.   $D000-$DFFF SWAPPED IN. ╘HIS IS NOT A STANDARD "BASIC ┬┴╬╦ #" BUT WHEN WE
  53.   COVER THE INIT'MEMORY ROUTINE WE'LL SEE HOW WE CAN DO THIS. ═USIC DATA
  54.   WILL BE FROM $A000-$D000. 
  55.   
  56.  
  57. ╪.  ╠OOKING ╞ORWARD / ┬ACK
  58.     ----------------------
  59.  
  60.   ╚OPEFULLY THROUGH THE LISTING AND THE DISCUSSION OF THE ROUTINES YOU HAVE
  61.   STARTED TO UNDERSTAND THE BASIC CONCEPT OF PROGRAMMING: BREAKING DOWN PROBLEMS 
  62.   INTO SMALLER SOLVABLE STEPS. ╘RY LOOKING BACK OVER THE CODE ASKING YOURSELF
  63.   WHY THAT INSTRUCTION IS THERE. ╫HAT WOULD HAPPEN IF YOU SWITCHED THE ORDER?
  64.   ╔S THERE AN EASIER, BETTER WAY TO DO THE SAME THING? ╫HY? ┬ETTER YET, HOW?
  65.   ┼XAMINE THE CODE, MESS WITH IT, MUCK IT UP SO IT DOESN'T WORK AND THEN FIGURE
  66.   OUT EXACTLY WHY. ╘HE ONLY WAY TO LEARN IS BY EXPERIMENTATION. (┬╘╫, MUCK UP
  67.   A _COPY_ OF IT - NOT THE ORIGINAL ... *GRINS*)
  68.  
  69.   ╘AKE A LOOK AT THE DIFFERENT SECTIONS OF CODE AND ANALYZE THEM TO SEE HOW
  70.   THEY DO WHAT THEY DO. ╘AKE A LOOK AT HOW THE CODE WAS ORGANIZED IN TERMS
  71.   OF SIMPLIFICATION. ╘RACE THROUGH EACH SUBROUTINE SO THAT YOU'RE ABLE TO 
  72.   KNOW WHAT THE RETURN VALUES WILL BE. ╔N OTHER WORDS: ╙TUDY, ╙TUDY, ╙TUDY!!
  73.   ╔'M IN SCHOOL AND SO ╔ KNOW ╔ JUST USED THE DREADED '╙' WORD BUT THAT'S 
  74.   WHAT YOU'RE GOING TO HAVE TO DO IF YOU'RE INTERESTED IN LEARNING 65XX/85XX
  75.   MACHINE LANGUAGE. ╘HE ONLY WAY TO LEARN IT (EASILY) IS TO STUDY OTHER 
  76.   PEOPLE'S CODE AND TRY TO UNDERSTAND WHY THEY DID WHAT THEY DID.
  77.  
  78.   ╬EXT TIME WE WILL TAKE A LOOK AT THE INPUT ROUTINES FOR THE MOUSE, JOYSTICK
  79.   AND KEYBOARD SCANNING. ╔N ADDITION WE WILL ALSO ALLOW THE PLAYER TO MOVE
  80.   THE SHIP AROUND ON THE SCREEN TO TEST THE INPUT DRIVERS. 
  81.  
  82.   ╔N ADDATION, ╔ AM STILL LOOKING FOR AN INDIVIDUAL TO HELP WITH MUSIC AND
  83.   SOUND COMPOSITION FOR THIS PROGRAM. ┴ KNOWLEDGE OF THE ╙╔─ CHIP AND 
  84.   PROGRAMMING IS HELPFUL BUT NOT REQUIRED. ╔F YOU'RE WILLING TO HELP THEN
  85.   PLEASE EMAIL ME AT DUCK@PEMBVAX1.PEMBROKE.EDU
  86.  
  87.  
  88. ╪╔. ╠ISTINGS
  89.     --------
  90.  
  91.   ┬ECAUSE OF THE ENORMITY OF THE PROGRAM LISTING (SOME 1,500+ LINES) IT WILL 
  92.   NOT BE LISTED IN THIS ARTICLE BUT WILL INSTEAD BE AVAILABLE VIA ANONYMOUS
  93.   FTP AT CCOSUN.CALTECH.EDU UNDER PUB/RKNOP/╚┴├╦╔╬╟.═┴╟ AS INVAS1.SFX. 
  94.  
  95.   ╞OR THOSE OF YOU ON THE MAILING LIST WHO WOULD LIKE TO RECIEVE IT, A ═AIL-
  96.   ╙ERVER WILL BE SET UP SOON TO HANDLE REQUESTS AND INFORMATION WILL BE
  97.   SENT TO YOU CONCERNING INFORMATION ABOUT USING IT AS SOON AS IT'S COMPLETED.
  98.  
  99.   ╔N THE INVASION1.SFX FILE THERE ARE THE FOLLOWING FILES:
  100.  
  101.        INVASION.SRC - THE MAIN FILE
  102.        GRAPHICS.SRC - HANDLES ALL GRAPHICS ROUTINES
  103.        LOGO.DAT     - CUSTOM CHARACTER LOGO
  104.        CHARS64.DAT  - ALIEN CUSTOM CHARACTERS FOR ├=64
  105.        CHARS128.DAT - ALIEN CUSTOM CHARACTERS FOR ├=128
  106.        TITLETXT.DAT - TEXT DATA FOR TITLE SCREEN
  107.        TITLECOL.DAT - COLOR DATA FOR TITLE SCREEN
  108.        INVASION-128 - EXECUTABLE VERSION OF ╙PACE ╔NVASION SO FAR FOR ├=128
  109.        INVASION-64  - EXECUTABLE VERSION OF ╙PACE ╔NVASION SO FAR FOR ├=64
  110.  
  111.   ╬OTE: ╞OR THE ├OMMODORE 128 IT'S RECOMMENDED THAT YOU DO A RUN/STOP-RESTORE
  112.   AND THEN A "┬┴╬╦15:╙┘╙7168" TO EXECUTE THE PROGRAM. ╞OR THE ├OMMODORE 64 IT'S
  113.   RECOMMENDED THE BORDER BE CHANGED VIA: "╨╧╦┼53280,0:╨╧╦┼53281,0:╙┘╙ 32768" TO
  114.   RUN THE PROGRAM.
  115.  
  116. ==============================================================================
  117. ╘HE ─EMO ├ORNER:
  118.  
  119. ╞╠╔ - MORE COLOR TO THE SCREEN   
  120. BY ╨ASI '┴LBERT' ╧JALA (PO87553@CS.TUT.FI OR ALBERT@CC.TUT.FI)
  121.                         ╫RITTEN ON 16-═AY-91   ╘RANSLATION 01-╩UN-92
  122.     
  123. (┴LL TIMINGS ARE IN ╨┴╠, ALTHO THE PRINCIPLES WILL APPLY TO ╬╘╙├ TOO)
  124.  
  125. ┴LL OF US HAVE HEARD COMPLAINTS ABOUT THE COLOR CONSTRAINTS ON ├64. ╧NE 8X8
  126. PIXEL CHARACTER POSITION MAY ONLY CARRY FOUR DIFFERENT COLORS.  ╞╠╔ PICTURE
  127. CAN HAVE ALL OF THE 16 COLORS IN ONE CHAR POSITION.  ╫HAT THEN IS THIS ╞╠╔
  128. AND HOW IT IS DONE ?
  129.  
  130. ╔N THE NORMAL MULTICOLOR MODE CAN ONE CHARACTER POSITION (4X8 PIXELS) HAVE
  131. ONLY FOUR DIFFERENT COLORS AND ONE OF THEM IS THE COMMON BACKGROUND COLOR.
  132. ├OLOR CODES ARE STORED IN HALF BYTES (NYBBLES) TO THE VIDEO MATRIX MEMORY
  133. (ANYWHERE VIDEO MATRIX POINTER POINTS AT, NORMALLY $0400) AND TO THE COLOR
  134. MEMORY ($─800-$─┬╞╞). ╔N MULTICOLOR MODE THE COLOR OF EACH PIXEL IS
  135. DETERMINED BY TWO BITS IN THE GRAPHICS MEMORY. ┬IT PAIR 11 WILL REFER TO
  136. COLOR MEMORY, BACKGROUND COLOR IS THE COLOR FOR BIT PAIR 00, AND VIDEO
  137. MATRIX WILL DEFINE THE COLORS FOR BIT PAIRS 01 AND 10.
  138.  
  139.  
  140. _╫HAT HAPPENS IN THE ╓╔├ ?_
  141.  
  142. ╓╔├ (╓IDEO ╔NTERFACE ├ONTROLLER) FETCHES COLOR INFORMATION FROM MEMORY ON
  143. EACH BAD LINE. ╘HIS WILL STEAL TIME FROM PROCESSOR, BECAUSE ╓╔├ NEEDS TO USE
  144. PROCESSOR'S BUS CYCLES. ┬AD LINE IS A CURSE IN THE ├64 WORLD. ╞ORTUNATELY
  145. ╓╔├'S DATA BUS IS 12 BITS WIDE AND SO THE COLOR DATA FETCH FOR EACH CHARACTER
  146. POSITION WILL TAKE ONLY ONE BUS CYCLE. ├OLOR MEMORY IS PHYSICALLY WIRED TO
  147. THE ╓╔├ DATABUS LINES ─8-─11.
  148.  
  149. ╚OW DOES ╓╔├ KNOW WHERE TO FETCH THE GRAPHICAL INFORMATION ? ╙OME OF YOU KNOW
  150. THE MYSTICAL FORMULAS NEEDED TO MESS WITH THE PIXELS IN THE HIRES SCREEN.
  151. ╚OW ARE THESE FUNCTIONS OBTAINED ? ┴RE THEY JUST MAGIC ? ╬O, THERE ARE SOME
  152. INTERNAL COUNTERS IN ╓╔├. ╘HEY ALWAYS POINT TO THE RIGHT PLACE IN GRAFIX
  153. MEMORY AND THE ADDRESS IS DETERMINED LIKE THIS:
  154.  
  155. ┴13  ┴12 ┴11 ┴10 ┴9  ┴8  ┴7  ┴6  ┴5  ┴4  ┴3  ┴2  ┴1  ┴0
  156. ├┬13 ╓├9 ╓├8 ╓├7 ╓├6 ╓├5 ╓├4 ╓├3 ╓├2 ╓├1 ╓├0 ╥├2 ╥├1 ╥├0
  157.  
  158. ┴DDRESS BITS ┴15 AND ┴14 CHANGE ACCORDING TO THE SELECTED VIDEO BANK.
  159. ┴DDRESS BIT ┴13 IS ├┬13, WHICH MAY BE FOUND IN ╓╔├ REGISTER $18. ╔T
  160. SELECTS THE RIGHT SIDE OF THE VIDEO BANK TO BE THE BITMAP MEMORY. ╫ITH
  161. THESE BITS YOU CAN SET THE BITMAP TO EIGHT DIFFERENT PLACES IN MEMORY.
  162. ╚OWEVER, SOME OF THEM ARE USELESS BECAUSE OF THE CHARACTER ╥╧═ IMAGES AND
  163. ZERO PAGE/STACK. ╥EST OF THE BITS COME FROM THE INTERNAL COUNTERS.
  164.  
  165. ╓├9-╓├0 (╓IDEO ├OUNTER) FORMS THE ADDRESS BITS 12-3. ╘HE COUNTER ROLLS
  166. THROUGH ALL 1000 CHARACTER POSITIONS, 0-39 ON THE FIRST EIGHT LINES, 40-79
  167. ON THE SECOND EIGHT LINES AND SO ON. ╘HE LOWEST THREE BITS COME FROM THE ROW
  168. COUNTER, ╥├2-╥├0. ╘HIS IS ANOTHER ╓╔├ COUNTER AND IT COUNTS THE SCAN LINES
  169. FROM ZERO TO SEVEN.
  170.  
  171.  
  172. _┴ SOFTWARE GRAPHICS MODE - ╞╠╔_
  173.  
  174. ╓╔├ WILL SYSTEMATICALLY GO THROUGH EVERY BYTE IN THE BITMAP MEMORY, BUT HOW
  175. DOES IT KNOW WHERE AND WHEN TO GET THE COLOR INFORMATION ? ╘HIS IS WHERE
  176. THE MAIN PRINCIPLE OF ╞╠╔ (╞LEXIBLE ╠INE ╔NTERPRETATION) LIES. ├OLOR DATA
  177. IS FETCHED (AND THIS MEANS IT IS A BAD LINE), WHEN THE LINE COUNTER MATCHES
  178. WITH THE VERTICAL SCROLL REGISTER. ╓├9-╓├0 DEFINES WHERE THE COLOR DATA IS
  179. INSIDE THE VIDEO MATRIX AND COLOR MEMORY.
  180.  
  181. ╔F WE CHANGE THE VERTICAL SCROLL REGISTER, WE CAN FOOL ╓╔├ TO THINK THAT
  182. EVERY LINE IS A BAD LINE, SO IT WILL FETCH THE COLOR INFORMATION ON EVERY
  183. LINE TOO. ┬ECAUSE ╓╔├ WILL FETCH THE COLORS CONTINUOSLY, WE CAN GET
  184. INDEPENDENT COLORS ON EACH SCAN LINE. ╫E JUST HAVE TO CHANGE COLORS AND ╓╔├
  185. WILL HANDLE THE REST. ╒NFORTUNATELY THE RESULT IS THE LOSS OF 40 PROCESSOR
  186. CYCLES PER LINE (SEE THE ═ISSING ├YCLES ARTICLE FOR MORE INFORMATION ABOUT
  187. ╓╔├ STEALING CYCLES).
  188.  
  189.  
  190. _─OING IT IN PRACTICE_
  191.  
  192. ╔N PRACTICE THERE IS NO TIME TO CHANGE COLOR MEMORY, BUT IN MULTICOLOR
  193. MODE ╓╔├ USES VIDEO MATRIX FOR COLOR INFORMATION TOO. ╫E HAVE JUST ENOUGH
  194. TIME TO CHANGE THE VIDEO MATRIX POINTER, $─018. ╬OW ╓╔├ WILL SEE A
  195. DIFFERENT VIDEO MATRIX ON EACH SCAN LINE, DIFFERENT BLOCK OF MEMORY. ╫ITH
  196. THE FOUR UPPER BITS IN THE REGISTER WE SELECT ONE OF THE 16 VIDEO MEMORIES
  197. IN THE VIDEO BANK. ╩UST REMEMBER THAT THE REGISTER ALSO SELECTS THE POSITION
  198. OF THE GRAPHICS MEMORY (BITMAP) INSIDE THE VIDEO BANK.
  199.  
  200. ┬ECAUSE WE HAVE TO KEEP THE BITMAP IN THE SAME VIDEO BANK, WE ONLY HAVE HALF
  201. OF THE BANK FREE FOR VIDEO MATRICES. ╞ORTUNATELY, THAT'S ALL WE NEED TO GET
  202. INDIVIDUAL MULTICOLOR COLORS FOR EACH LINE AND CHARACTER POSITION.
  203. ╓╔├ WILL FETCH THE COLOR DATA FROM THE EIGHT VIDEO MATRICES AND THEN IT WILL
  204. ROLL ON TO THE NEXT 40 BYTES. ┴FTER EIGHT LINES AND MATRICES WE WILL SELECT
  205. THE FIRST VIDEO MATRIX AGAIN. (╙EE PICTURE 1)
  206.  
  207. ╒SUALLY IT IS NOT NECASSARY TO USE THE WHOLE SCREEN FOR A ╞╠╔ PICTURE,
  208. ESPECIALLY IF YOU WANT TO HAVE A SCROLLER OR SOME OTHER EFFECTS. ┘OU JUST
  209. HAVE TO MAKE SURE THAT ╓╔├ IS FOOLABLE IN THE USUAL WAY. ╘HE TIMING IS ALSO
  210. VERY IMPORTANT, EVEN ONE CYCLE VARIATIONS IN THE ROUTINE ENTRY ARE NOT
  211. ALLOWED. ╘HERE IS MANY WAYS TO DO THE SYNCHRONIZATION. ╧NE WAY IS TO USE A
  212. SPRITE, AS IN THE PREVIOUS ARTICLE. (╙EE ├= ╚ACKING, ╓OL. 1, ╔SS. 3, ╘HE
  213. ─EMO ├ORNER: ═ISSING ├YCLES).
  214.  
  215.  
  216. _╬OT MUCH TIME_
  217.  
  218. ┬ECAUSE A BAD LINE WILL STEAL 40 CYCLES, THERE IS ONLY 23 CYCLES LEFT ON
  219. EACH SCAN LINE. ╔T IS ENOUGH FOR CHANGING THE VIDEO MATRIX AND BACKGROUD
  220. COLOR. ╘HERE IS NOT A MOMENT TO LOSE, BECAUSE YOU MUST CHANGE THE VERTICAL
  221. SCROLL REGISTER, VIDEO MATRIX POINTER AND THE BACKGROUND COLOR. ╘HIS IS WHY
  222. YOU CAN'T HAVE SPRITES IN FRONT OF A ╞╠╔ PICTURE.
  223.  
  224. ╫ITH ╞╠╔ WE GET TWO SELECTABLE COLORS FOR EACH CHARACTER POSITION AND LINE,
  225. EACH SCAN LINE CAN HAVE IT'S OWN BACKGROUND COLOR AND EACH CHARACTER POSITION
  226. STILL HAS ITS OWN CHARACTER COLOR FROM COLOR MEMORY. ╔N THEORY EACH CHARACTER
  227. POSITION COULD HAVE 25 DIFFERENT COLORS, UNFORTUNATELY ╓╔├ ONLY HAS 16.
  228.  
  229.  
  230. _┴ LITTLE FEATURE_
  231.  
  232. ╓╔├ DOES NOT LIKE IT WHEN WE CHANGE THE VERTICAL SCROLL REGISTER ($─011),
  233. AND IS A BIT ANNOYED. ╔T 'SEES' CODE 255 (LIGHT GRAY) IN VIDEO MATRIX
  234. AND 9 (BROWN) IN THE COLOR MEMORY INSTEAD OF THE CORRECT VALUES STORED THERE.
  235. ┴CTUALLY THE COLOR VALUE SEEMS TO BE THE LOWER NYBBLE OF THE DATA BYTE
  236. CURRENTLY ON THE DATA BUS (ACCESSED BY THE PROCESSOR (╠─┴#=$┴9)).
  237. ╒NFORTUNATELY THERE IS NO CHANCE TO DO THE REGISTER CHANGE IN THE BORDER
  238. AND THUS THE THREE LEFTMOST CHARACTER COLUMNS ARE A BIT USELESS, BECAUSE
  239. THE COLORS ARE FIXED.
  240.  
  241. ╚OWEVER, THIS DOESN'T MEAN THAT YOU CAN'T USE THOSE THREE COLUMNS. ╞╠╔
  242. EDITORS MAY NOT SUPPORT THE FIXED COLORS THOUGH, SO IT MAY BE HARD TO USE
  243. THEM.
  244.  
  245.  
  246.  ╫HAT TO DO WITH ╞╠╔ ?_
  247.  
  248. ┬ECAUSE ╞╠╔ WILL EAT UP ALL THE AVAILABLE PROCESSOR TIME (NO ├OPPER :-),
  249. IT IS NOT SUITABLE FOR ANY ACTION-GAMES. ┼ACH ╞╠╔ PICTURE TAKES ABOUT 17 K┬
  250. OF MEMORY: NOT SO MANY PICTURES FIT ON ONE FLOPPY. ╙O, THE ONLY PLACE FOR ╞╠╔
  251. IS DEMOS, INTROS, BOARD-TYPE GAMES AND MAYBE A ╟╔╞ VIEWER..
  252.  
  253. --------------------------------------------------------------------------
  254. ╨ICTURE 1: ╞ROM WHICH MATRIX ╓╔├ FETCHES THE MULTICOLOR VALUES
  255.  
  256.  _          ___________________________________________________________
  257. ⁿ      ... ⁿ ═ATRIX0       ⁿ ═ATRIX0       ⁿ ═ATRIX0       ⁿ
  258. ⁿ      ,  .ⁿ____3__________ⁿ____4__________ⁿ____5__________ⁿ  ...
  259. ⁿ       ╒ .ⁿ ═ATRIX1       ⁿ ═ATRIX1       ⁿ ═ATRIX1       ⁿ
  260. ⁿ       S .ⁿ____3__________ⁿ____4__________ⁿ____5__________ⁿ .
  261. ⁿ├HAR   E  ⁿ ═ATRIX2       ⁿ ═ATRIX2       ⁿ ═ATRIX2       ⁿ .
  262. ⁿ╠INE   L  ⁿ____3__________ⁿ____4__________ⁿ____5__________ⁿ .
  263. ⁿ┌ERO   E  ⁿ ═ATRIX3       ⁿ ═ATRIX3       ⁿ ═ATRIX3       ⁿ
  264. ⁿ       S  ⁿ____3__________ⁿ____4__________ⁿ____5__________ⁿ
  265. ⁿ       S, ⁿ ═ATRIX4       ⁿ ═ATRIX4       ⁿ ═ATRIX4       ⁿ
  266. ⁿ          ⁿ____3__________ⁿ____4__________ⁿ____5__________ⁿ
  267. ⁿ       C  ⁿ ═ATRIX5       ⁿ ═ATRIX5       ⁿ ═ATRIX5       ⁿ
  268. ⁿ       O  ⁿ____3__________ⁿ____4__________ⁿ____5__________ⁿ
  269. ⁿ       L  ⁿ ═ATRIX6       ⁿ ═ATRIX6       ⁿ ═ATRIX6       ⁿ
  270. ⁿ       U  ⁿ____3__________ⁿ____4__________ⁿ____5__________ⁿ
  271. ⁿ       M  ⁿ ═ATRIX7       ⁿ ═ATRIX7       ⁿ ═ATRIX7       ⁿ
  272. ⁿ_      N  ⁿ____3__________ⁿ____4__________ⁿ____5__________ⁿ
  273.         S  ⁿ ═ATRIX0       ⁿ ═ATRIX0       ⁿ ═ATRIX0       ⁿ
  274.            ⁿ___43__________ⁿ___44__________ⁿ___45__________ⁿ
  275.            ⁿ ═ATRIX1       ⁿ ═ATRIX1       ⁿ ═ATRIX1       ⁿ
  276.            ⁿ___43__________ⁿ___44__________ⁿ___45__________ⁿ
  277.            ⁿ
  278.            ⁿ   ...
  279.            ⁿ .
  280.            ⁿ .
  281.            ⁿ .
  282.  
  283. --------------------------------------------------------------------------
  284. _┴DDITIONAL READING_
  285.  
  286. ╔F YOU HAVE AN ┴MIGA YOU MIGHT WANT TO GET YOUR HANDS INTO MY CONVERSION
  287. PROGRAMS IN ├64╟╞╪1.LHA. ╘HE PACKET ALSO INCLUDES ╞╠╔ VIEWER FOR ╨┴╠ ├64'S
  288. AND SOME DOCUMENTATION ABOUT THE ╞╠╔ FILE FORMAT. ╔T ALSO HAS THE SAME
  289. UTILITIES FOR ╦OALA FORMAT PICTURES.
  290.  
  291. ┴VAILABLE FROM:
  292. CWAVES.STFX.CA
  293. NIC.FUNET.FI:/PUB/AMIGA/GRAPHICS/APPLICATIONS/CONVERT
  294.  
  295.  
  296. ├64╟╞╪.DOC
  297.                         ├64╟FX1.0
  298.            ┴ ├64 GRAFIX FORMAT CONVERSION PACKAGE
  299.            )1991,1992  ╨ASI '┴LBERT' ╧JALA
  300.  
  301.            ┼-MAIL: PO87553@CS.TUT.FI
  302.                    ALBERT@CC.TUT.FI
  303.  
  304. ╘HIS PACKAGE CONTAINS PROGRAMS WHICH ARE USED TO CONVERT PORTABLE
  305. PIXMAP (PPM) FILES TO ├64 GRAPHICS FORMATS (╞╠╔ AND KOALA) UNDER
  306. ┴MIGA╧╙. ╘HE PACKAGE INCLUDES ├ SOURCE CODES FOR THE PROGRAMS, SO
  307. IT IS POSSIBLE TO PORT THE PROGRAMS TO ANOTHER ENVIRONMENT. ├64╟╞╪1.1
  308. INCLUDES ╒NIX-COMPILABLE SOURCES.
  309.  
  310. ╔N ADDITION TO THIS PACKAGE YOU NEED E.G. ╨┬═╨LUS TO CONVERT ┴MIGA
  311. ILBM FILES TO PPM FIRST. ┴ND OF COURSE SOME WAY TO TRANSFER FILES
  312. BETWEEN THE MACHINES.
  313.  
  314. =============================================================================
  315. ╥╙-232 ├ONVERTER
  316. BY ╫ARREN ╘USTIN (WARREN@COL.HP.COM)
  317.  
  318.   ╘HIS ARTICLE PRESENTS A WAY TO INTERFACE FROM THE ├= RS232 HARDWARE
  319. BEHIND THE USER PORT TO A STANDARD 25PIN FEMALE RS232 CONNECTOR USING ONLY
  320. ONE ╔├ AND A FEW CAPACITORS.  ╔T IS NOT A ╒┴╥╘ OR A ╙╫╔╞╘╠╔╬╦ TYPE INTERFACE
  321. WHICH TAKE PLACE OF THE INTERNAL ├= RS232 CIRCUITRY, BUT A SIMPLE LEVEL SHIFTING 
  322. INTERFACE THAT USES THE INTERNAL RS232 ROUTINES AND TRANSLATES THE USER PORT
  323. LEVELS TO RS232 LEVELS.  ╘HEREFORE YOU CAN ONLY GET UPTO 2400BAUD/9600BAUD
  324. (├=64/├=128) WITH THIS DESIGN.
  325.  
  326.   ╘HE "OLD" WAY TO DO THIS WAS TO USED ═├1488 AND ═├1489 PARTS (A LINE
  327. DRIVER AND LINE RECEIVER), HOWEVER THESE REQUIRED A NEGATIVE SUPPLY TO INTERFACE 
  328. PROPERLY.  ╘HE USER PORT ONLY SUPPLIES +5VOLTS, HENCE THIS PRESENTS A PROBLEM.
  329. ╘HERE HAS BEEN SUCCESS USING THESE PARTS OR DISCRETE TRANSISTORS AND RESISTORS
  330. SINCE MANY MODEMS ARE SOMEWHAT FRIENDLY AND SEEM TO WORK EVEN THOUGH THE LEVELS
  331. WERE MARGINAL.  ┴LSO, SOME SIGNALS WERE NOT USED, ALLOWING FOR POTENTIAL
  332. PROBLEMS.  ┴NOTHER WAY TO SOLVE THIS PROBLEM WAS TO BUY A $25-30 INTERFACE.  ╔F
  333. YOU CAN FIND THE ╔├ BELOW, YOU HAVE ANOTHER CHOICE THAT IS RELATIVELY
  334. INEXPENSIVE.
  335.  
  336.    ╘HE ╠╘1133 IS BASICALLY THE ═├1488 AND 1489 PUT TOGETHER INTO ONE PART
  337. WITH AN INTERNAL CHARGE PUMP SCHEME THAT ALLOWS THE INTERNAL DRIVERS TO OUTPUT
  338. +5 AND -5 VOLTS TO THE RS232 CONNECTOR.  ╔T ALSO HAS ENOUGH DRIVERS AND
  339. RECEIVERS TO HANDLE ALL OF THE SIGNALS THAT THE ├= USES FOR RS232.
  340.  
  341.    ╙O WITH THIS ╔├, 5 CAPACITORS AND THE TWO CONNECTORS (USER PORT AND
  342. RS232) YOU CAN BUILD YOUR OWN INTERFACE TO THE STANDARD 25 PIN MODEM CABLE.
  343.  
  344.    ╚ERE ARE THE PLANS FOR AN ╒SER PORT ╘╧ ╥╙232 CONNECTOR USING JUST ╧╬┼ ╔├ AND
  345. 4 CAPACITORS.  ╔T USES A ╠INEAR ╘ECHNOLOGY ╠╘1133 BUFFER THAT HAS 3 ╥╙232
  346. DRIVERS AND 5 RECEIVERS.  ╔T HAS WORKED FOR ME WITH NO PROBLEMS AND TAKES
  347. A MINIMUM AMOUT OF WIRING TO GET TO WORK.  ═Y BOARD IS ONLY THE WIDTH OF
  348. THE USER PORT AND ABOUT 1.5 INCHES DEEP IN SIZE.
  349.  
  350. ╨ARTS LIST:
  351. ----------
  352.      ╠╘1133├╬ PLASTIC DIP OR ╠╘1133├╩ CERAMIC DIP ╥╙232 DRIVER FROM ╠INEAR
  353.         ╘ECHNOLOGIES
  354.  
  355.         (╔T TAKES 27M┴ MAX (17M┴ TYPICAL) SO IS WELL BELOW THE 100M┴ 
  356.          LIMIT OF THE USER PORT)
  357.  
  358.          ─RIVER ╔N PINS  (15,19,21)  ╘╘╠/├═╧╙ COMPATIBLE.  ╒NUSED INPUTS
  359.                            ⁿ  ⁿ  ⁿ   SHOULD BE TIED TO +5V.
  360.          ─RIVER ╧UT PINS (11, 7, 5)  ╥╙232 COMPATIBLE.  ╙HORT CIRCUIT 
  361.                                      PROTECTED FROM -30V TO +30V.
  362.          ╥ECEIVER ╔N PINS  (6, 8, 9, 10,12)  ┴CCEPT ╥╙232 LEVELS (+-30V)
  363.                             ⁿ  ⁿ  ⁿ   ⁿ  ⁿ   AND HAVE 0.4V OF HYSTERESIS TO
  364.                             ⁿ  ⁿ  ⁿ   ⁿ  ⁿ   PROVIDE NOISE IMMUNITY.
  365.          ╥ECEIVER ╧UT PINS (20,18,17,16,14)  ╘╘╠/├═╧╙ OUTPUTS.
  366.  
  367.          ╬╧╘┼: ╠INES ABOVE INDICATE WHICH INPUTS GO WITH WHICH OUTPUTS, AND
  368.                THE PAIRS CAN BE INTERCHANGED FREELY.  ╔ CONNECTED THEM AS
  369.                DESCRIBED BELOW BECAUSE THE WIRING WORKED OUT THE BEST FOR ME. 
  370.  
  371.      4 - >= 1U╞ CAPACITORS   ╒SED TO GENERATE ╥╙232 VOLTAGES BY A CHARGE PUMP
  372.                              TECHNIQUE INSIDE ╔├
  373.      1   1U╞ CAPACITOR  ╘O BYPASS THE 5VOLT SUPPLY FOR NOISE REJECTION.
  374.  
  375.      1   ╒SER PORT FEMALE CONNECTOR.  (╔ JUST DUG THIS UP, ╔'M NOT SURE 
  376.          WHERE THESE CAN BE FOUND, ╔ THINK IT IS 0.159" SPACING, 24PIN.
  377.  
  378.      1   ╥╙232 25PIN FEMALE CONNECTOR.  ├AN BE FOUND AT ╥-╙HACK
  379.         
  380.      ╙OME SORT OF .1" SPACING PROTO BOARD
  381.  
  382. ├ONNECTIONS:
  383. -----------
  384.  
  385.   ╒SER PORT CONNECTOR (╠OOKING INTO THE ├64 OR ├128)
  386.  
  387.          1  2  3  4  5  6  7  8  9 10 11 12
  388.         ------------------------------------
  389.         ⁿ╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪╪ⁿ
  390.         ------------------------------------
  391.          ┴  ┬  ├  ─  ┼  ╞  ╚  ╩  ╦  ╠  ═  ╬
  392.  
  393. ╟ROUND & ╨OWER:
  394. --------------
  395.  
  396.   ╨INS 1, ┴, 12, ╬ TO ╟ROUND OF BOARD.
  397.   ╠╘1133 PIN 2 TO PIN 2 OF ╒SER PORT CONNECTOR (+5 VOLTS)
  398.   1U╞ CAPACITOR BETWEEN PIN2 AND GROUND (BYPASS CAP)
  399.   ╠╘1133 PIN 13 TO ╟ROUND.
  400.   ╥╙232 CONNECTOR PINS 7 & 1 TO ╟ROUND.
  401.  
  402. ╠╘1133 CAPACITORS:
  403.   1U╞ FROM PIN 1 (╓+) TO GROUND  (╔F POLARIZED (ELECTROLYTIC) + SIDE TO PIN 1)
  404.   1U╞ FROM PIN 24 (╓-) TO GROUND (┴S ABOVE BUT + SIDE TO GROUND)
  405.   1U╞ FROM PIN 3 (├1+) TO PIN 4 (├1-) (┴GAIN IF POLARIZED, + SIDE TO PIN 3)
  406.   1U╞ FROM PIN 22 (├2+) TO PIN 23 (├2-) (┴GAIN IF POLARIZED, + SIDE TO PIN 22)
  407.     
  408.  
  409.     ├OMMODORE SIDE                                       ╥╙232 SIDE
  410.   ╒SER PORT    ╙IGNAL    ╨IN OF       ╙IGNAL        ╨IN OF       ╥╙232
  411.   PIN          NAME      ╠╘1133      DIRECTION      ╠╘1133       CONNECTOR
  412.   ---------    ------    ------      ---------      ------       ---------
  413.    ┬  ╞╠┴╟2     ─IN        20         <--             6              3
  414.    ├   ╨┬0      ─IN     ALSO CONNECT TO ABOVE PIN 20
  415.    ─   ╨┬1      ╥╘╙        21             -->         5              4
  416.    ┼   ╨┬2      ─╘╥        19         <--             7              20
  417.    ╞   ╨┬3      ╥╔         18             -->         8              22
  418.    ╚   ╨┬4      ─├─        17             -->         9              8
  419.    ╩   ╨┬5      ╬OT USED
  420.    ╦   ╨┬6      ├╘╙        16             -->         10             5
  421.    ╠   ╨┬7      ─╙╥        14         <--             12             6
  422.    ═   ╨┴2      ─OUT       15             -->         11             2
  423.  
  424.  
  425. ╘HIS ASSUMES THAT YOU WANT TO CONNECT ALL OF THE COMMUNICATION LINES.  ╔ DID
  426. IT THIS WAY BECAUSE THE ├128 PROGRAMMERS REFERENCE GUIDE HAD ALL OF THE SIGNALS
  427. ABOVE LISTED.  ╔F YOU WANT TO DROP ╥╔ (RING INDICATOR) YOU COULD ALSO USE AN
  428. ╠╘1134 WHICH HAS 4 DRIVERS AND 4 RECEIVERS.
  429.  
  430. ╨ARTS ╙UBSTITUTION:
  431.  
  432.    ╘HERE ARE OTHER ╔├'S AVAILABLE WHICH WILL WORK IN THIS APPLICATION.
  433. ╘HE RS232 BUS LEVELS FOR THE ╠╘ PARTS ARE SPEC'ED AT ■ +/- 7V TYPICAL, WHILE
  434. THE ═┴╪╔═ PARTS ARE +/-9V TYPICAL.  (┬OTH ARE MIN AT +/- 5V WHICH SHOULD WORK
  435. IN ALL APPLICATIONS).  ╔ THINK THAT AN INTERFACE CAN BE DONE WITH ONLY 3
  436. LINES, ─IN(╥X), ─OUT(╘X), AND EITHER ─╙╥ OR ├╘╙, SO IF YOU CAN'T GET THE
  437. ╠╘1133 ONE OF THESE OTHERS MIGHT WORK, ALTHOUGH THE PINOUTS WOULD BE DIFFERENT.
  438. ╘HE MAX YOU WOULD NEED IS WHAT THE ╠╘1133 SUPPLIES, 3 DRIVERS & 5 RECEIVERS.
  439.  
  440. ╚ERE IS A DESCRIPTION OF PARTS THAT MIGHT BE SUBSTITUTED:
  441. (╬OTE, WITH ALL OF THEM YOU SHOULD USE A BYPASS CAP ON THE +5V SUPPLY WHICH
  442.  ╔ HAVE ╬╧╘ INCLUDED IN THE COUNTS BELOW.)
  443.  
  444.                  ╥╙232     ╥╙232    # OF ┼╪╘┼╥╬┴╠
  445. ╬┴═┼     ╨╔╬╙   ─╥╔╓┼╥╙  ╥┼├┼╔╓┼╥╙       ├┴╨╙       ├╧══┼╬╘╙
  446. -------------------------------------------------------------------------
  447. ╠INEAR ╘ECHNOLOGY PARTS...
  448. (╧N THE PARTS WITH SHUTDOWN (╙─), THE PIN MUST BE TIED TO +5 TO OPERATE)
  449. ╠╘1133    24       3         5             4        ╔N ARTICLE ABOVE
  450. -------------------------------------------------------------------------
  451. ╠╘1130    28       5         5             4        ╧VERKILL (╙─P14)
  452. ╠╘1131    28       5         4             4        2 EX ─R, 1 < ╥CVR
  453. ╠╘1132    24       5         3             4        2 EX ─R, 2 < ╥CVR
  454. ╠╘1134    24       4         4             4        1 < ╥CVR
  455. ╠╘1136    28       4         5             4        1 EX ─R  (╙─P14)
  456. ╠╘1137    28       3         5             4        ╙─P13
  457. ╠╘1138    28       5         3             4        ╠╘1132 W/╙─P13
  458.  
  459. ═┴╪╔═ PARTS... (╙OME ALSO HAVE A ╘╘╠ ┼╬_ PIN THAT MUST BE TIED TO 0V TO OPERATE) 
  460.                (╧N THESE PARTS, ╙─ MUST BE TIED TO 0V TO OPERATE!)
  461. ═┴╪232    16       2         2             4        ═AY WORK
  462. ═┴╪233    20       2         2             0!       ╬O EXTERNAL CAPS
  463. ═┴╪235    24       5         5             0!       ╧VERKILL, BUT ╬╧ CAPS,
  464.                                                     ╙─P21, ┼╬_P20
  465. ═┴╪236    24       4         3             4        1 EX ─R, 2 < ╥CVR,
  466.                                                     ╙─P21, ┼╬_P20
  467. ═┴╪237    24       5         3             4        2 EX ─╥, 2 < ╥CVR
  468. ═┴╪238    24       4         4             4        1 EX ─╥, 1 < ╥CVR
  469.  
  470.   ╔N SUMMARY, YOU CAN SEE THERE ARE MANY DIFFERENT PARTS YOU COULD USE,
  471. ESPECIALLY IF YOU DON'T NEED ALL THE SIGNALS.  ╘HE ═┴╪╔═ PARTS SEEM TO
  472. DO THE JOB IN FEWER PINS AND A LITTLE BETTER TYPICAL DRIVE SPEC AND ╔
  473. WOULD RECOMMEND THE ═┴╪235 OVERALL SINCE YOU ONLY NEED 1 BYPASS CAP TO
  474. MAKE IT OPERATE!
  475.  
  476. =============================================================================
  477. ╔NTRODUCTION TO THE ╓╔├-╔╔
  478. BY ╨ASI '┴LBERT' ╧JALA ( ... )
  479.  
  480. ╘HE ╓IDEO ╔NTERFACE ├ONTROLLER USED IN ├64 HAVE SEVERAL DIFFERENT OPERATING
  481. MODES AND DIFFERENT GRAPHICAL PRIMITIVES. ┬ASICALLY THERE IS A) CHARACTER
  482. MODE, B) BITMAP MODE AND C) MOVABLE OBJECTS THAT CAN BE MIXED WITH THE
  483. OTHER GRAPHICS. ╘HESE PRIMITIVES CAN ALSO BE PUT INTO A MORE COLORFUL MODE,
  484. BUT YOU LOSE HALF OF THE RESOLUTION IN THAT PROCESS.
  485.  
  486.  
  487. ╔. ╙TANDARD ├HARACTER ─ISPLAY ═ODE
  488.  
  489. ╔N THE CHARACTER DISPLAY MODE, ╓╔├ FETCHES CHARACTER POINTERS FROM VIDEO
  490. MATRIX, WHICH CONSISTS OF 1000 8-BIT BYTES FORMATTED AS 25 ROWS OF 40
  491. CHARACTERS EACH. ╘HE 8-BIT CHARACTER CODE IMPLIES 256 DIFFERENT CHARACTERS
  492. SIMULTANEOUSLY ONSCREEN.
  493.  
  494. ┼ACH CHARACTER CODE CAN HAVE AN UNIQUE IMAGE, WHICH CONSISTS OF 8 BYTES IN
  495. CHARACTER MEMORY. ╘HE POSITION OF THE CHARACTER MEMORY CAN BE MOVED WITH THE
  496. CHARACTER BASE POINTER AND THUS IT IS POSSIBLE TO HAVE SEVERAL CHARACTER SETS
  497. SIMULTANEOSLY IN MEMORY. ╧NE CHARACTER MEMORY IS 2048 BYTES.
  498.  
  499. ╔N ADDITION TO THE CHARACTER CODE, EACH POSITION IN VIDEO MATRIX HAS AN
  500. ASSOCIATED COLOR NYBBLE (4 BITS) IN COLOR MEMORY ($─800-$─╞╞╞). ╞OR EACH
  501. ZERO-BIT IN THE CHARSET THE BACKGROUND COLOR FROM REGISTER $21 IS DISPLAYED,
  502. THE COLOR-NYBBLE IS USED FOR THE ONE-BIT.
  503.  
  504.  
  505. ╔╔. ├HARACTER ═ULTICOLOR ═ODE
  506.  
  507. ╔N CHARACTER MULTICOLOR MODE, COLOR SELECTION IS INCREASED. ┼ACH BYTE IS
  508.  
  509. FETCHED FROM THE CHARACTER MEMORY JUST LIKE IN THE STANDARD CHARACTER MODE,
  510. BUT THEY ARE INTERPRETED DIFFERENTLY. ╔N THIS MODE BYTES ARE DIVIDED INTO
  511. BIT-PAIRS. ╞OR BIT PAIR "00" THE BACKGROUND COLOR FROM REGISTER $21 IS
  512. DISPLAYED, BACKGROUND COLOR #1 IS USED FOR BIT PAIR "01" AND BACKGROUND
  513. COLOR #2 FOR BIT PAIR "10". ╘HE COLOR NYBBLE WILL DEFINE THE COLOR FOR BIT
  514. PAIR "11".
  515.  
  516. ╘HE HIGHEST BIT IN THE COLOR MEMORY DEFINES WHETHER THE CHARACTER IS TO BE
  517. DISPLAYED IN MULTICOLOR ("1") OR IN STANDARD MODE ("0"). ┬ECAUSE OF THIS,
  518. ONLY COLORS IN THE RANGE FROM 0 TO 7 ARE POSSIBLE FOR BIT PAIR "11". ┴ND SINCE
  519. TWO BITS ARE REQUIRED TO SPECIFY ONE DOT COLOR, THE CHARACTER IS NOW DISPLAYED
  520. AS A 4X8 MATRIX INSTEAD OF THE 8X8 MATRIX AND THE SIZE OF THE DOTS ARE DOUBLED
  521. HORIZONTALLY.
  522.  
  523.  
  524. ╔╔╔. ┼XTENDED ├OLOR ═ODE
  525.  
  526. ╘HE EXTENDED COLOR MODE ALLOWS THE SELECTION OF ONE BACKGROUND COLOR FROM FOUR
  527. POSSIBILITIES FOR EACH CHARACTER POSITION IN THE NORMAL 8X8 RESOLUTION. ╘HE
  528. CHARACTER IMAGE DATA IS PROCESSED LIKE IN STANDARD CHARACTER MODE, BUT THE
  529. TWO MOST SIGNIFICANT BITS IN THE CHARACTER CODE (VIDEO MATRIX) ARE USED TO
  530. SELECT THE RIGHT BACKGROUND COLOR REGISTER. ╧NLY CHARACTER IMAGES FROM 0 TO 63
  531. ARE ACCESSIBLE, BECAUSE TWO OF THE MOST SIGNIFICANT BITS ARE USED FOR THE
  532. BACKGROUND COLOR SELECTION.
  533.  
  534. ┼XTENDED COLOR MODE AND MULTICOLOR MODE SHOULD NOT BE SELECTED SIMULTANEOSLY,
  535. BECAUSE THIS WILL RESULT A BLACK SCREEN. ╚OWEVER, THIS IS A VERY EASY WAY TO
  536. HIDE SOMETHING IF NEEDED.
  537.  
  538.  
  539. ╔╓. ╙TANDARD ┬IT ═AP ═ODE
  540.  
  541. ╔N BIT MAP MODE, A ONE-TO-ONE CORRESPONDENCE EXISTS BETWEEN EACH DISPLAYED
  542. DOT AND A MEMORY BIT. ╘HE BIT MAP PROVIDES A RESOLUTION OF 320╚ X 200╓
  543. INDIVIDUALLY CONTROLLED PIXELS. ╘HE VIDEO MATRIX IS STILL ACCESSED AS IN
  544. CHARACTER MODE, BUT THE DATA IS INTERPRETED AS COLOR DATA. ╫HEN A BIT IS "0"
  545. IN THE BIT MAP DATA, THE COLOR FROM THE LOWER NYBBLE IS SELECTED. ╘HE
  546. HIGHER NYBBLE FROM THE VIDEO MATRIX IS USED FOR THE BIT "1".
  547.  
  548.  
  549. ╓. ═ULTICOLOR ┬IT ═AP ═ODE
  550.  
  551. ╔N MULTICOLOR BIT MAP MODE TWO BITS IN THE BIT MAP MEMORY DETERMINE THE COLOR
  552. OF ONE PIXEL. ╔F THE BIT PAIR IS "11", THE COLOR FOUND FROM THE COLOR MEMORY
  553. IS USED. ╘HE BACKGROUND COLOR IS USED FOR BIT PAIR "00" AND THE VIDEO MATRIX
  554. DEFINES THE COLORS FOR BIT PAIRS "01" AND "10". ┴S IT TAKES TWO BITS TO DEFINE
  555. ONE PIXEL COLOR, THE HORIZAONTAL RESOLUTION IS HALVED TO 160╚ X 200╓.
  556.  
  557.  
  558. ╓╔. ═OVABLE ╧BJECT ┬LOCKS (═╧┬S)
  559.  
  560. ╘HE MOVABLE OBJECT BLOCK IS A SPECIAL TYPE OF GRAPHICAL OBJECT WHICH CAN BE
  561. DISPLAYED INDEPENDENTLY FROM THE OTHER GRAPHICS. ┼ACH ONE OF THE ═╧┬S CAN
  562. BE MOVED INDEPENDENTLY ANYWHERE IN THE SCREEN. ┼IGHT UNIQUE ═╧┬S CAN BE
  563. DISPLAYED SIMULATANIOUSLY, EACH DEFINED BY 64 BYTES IN MEMORY WHICH ARE
  564. DISPLAYED AS A 24 X 21 PIXEL ARRAY.
  565.  
  566. ┼ACH ═╧┬ CAN BE SELECTIVELY ENABLED (═N┼="1") OR DISABLED (═N┼="0"). ┴ ═╧┬
  567. IS POSITIONED VIA ITS ╪ AND ┘ POSITION REGISTERS. ╬INE BITS ARE NEEDED TO
  568. DEFINE THE VERTICAL POSITION AND THE MOST SIGNIFICANT BITS OF ALL ═╧┬S ARE
  569. STORED IN THE REGISTER $10. ┴S ╪ LOCATIONS 23 TO 347 AND ┘ LOCATIONS 50 TO
  570. 249 ARE ENTIRELY VISIBLE ON THE SCREEN, ═╧┬S CAN BE SMOOTHLY MOVED TO AN
  571. OFF-SCREEN POSITION.
  572.  
  573. ┼ACH ═╧┬ HAS ITS OWN COLOR REGISTER AND A ═╧┬ CAN BE DISPLAYED EITHER IN
  574. STANDARD OR MULTICOLOR MODE (═N═├="1"). ┴S USUALLY, MULTICOLOR MODE GIVES
  575. MORE COLORS, BUT HALVES THE HORIZONTAL RESOLUTION. ╔N MULTICOLOR MODE BIT
  576. PAIR "00" IS TRANSPARENT, THE ═╧┬ COLOR REGISTER DEFINES THE COLOR FOR PAIR
  577. "10", AND ═╧┬ MULTICOLOR REGISTERS GIVE THE COLORS FOR PAIRS "01" AND "11".
  578.  
  579. ═╧┬S CAN BE SELECTIVELY EXPANDED IN BOTH DIRECTIONS. ╫HEN ═╧┬ IS EXPANDED,
  580. THE PIXEL SIZE ALSO EXPANDS AND IT IS STILL DISPLAYED AS 24 X 21 MATRIX
  581. (12 X 21 IN MULTICOLOR MODE).
  582.  
  583. ═╧┬ PRIORITIES DEFINE WHETHER A ═╧┬ APPEARS BEHIND OR ON TOP OF THE CHARACTER
  584. OR BIT MAP GRAPHICS. ┴ "1" IN ═N─╨ MEANS ═╧┬ IS DISPLAYED BEHIND. ═╧┬
  585. COLLISION REGISTERS MAY BE USED TO DETECT IF A NON-TRANSPARENT DATA OF TWO
  586. ═╧┬S OR A ═╧┬ AND CHARACTER OR BITMAP FOREGROUND DATA IS COLLIDING.
  587.  
  588. [┼D'S ╬OTE: ═╧┬'S ARE ╙PRITES. ├OMMODORE INITIALLY REFERRED TO THEM AS ═╧┬'S
  589. AND STILL DOES IN SOME AREAS.]
  590.  
  591.  
  592. ╓╔╔. ╧THER FEATURES
  593.  
  594. ╘HE DISPLAY SCREEN MAY BE BLANKED BY SETTING THE ─┼╬ BIT TO A "0". ╘HE ENTIRE
  595. SCREEN WILL BE FILLED WITH THE BORDER COLOR AS SET IN REGISTER 32 ($20).
  596. ╫HEN THE SCREEN IS BLANKED, ╓╔├ WILL NEED ONLY TRANSPARENT MEMORY CYCLES AND
  597. THE PROCESSOR IS NOT SLOWED DOWN. ╚OWEVER, ═╧┬ DATA IS STILL FETCHED, IF
  598. THE ═╧┬S ARE NOT ALSO DISABLED.
  599.  
  600. ╘HE NORMAL DISPLAY CONSISTS OF 25 ROWS OF 40 CHARACTERS EACH. ╘HE DISPLAY
  601. WINDOW CAN BE REDUCED TO 24 ROWS AND 38 CHARACTERS. ╘HIS HAS NO EFFECT ON HOW
  602. THE DATA IS INTERPRETED, ONLY THE CHARACTERS NEXT TO THE BORDER ARE COVERED
  603. BY THE BORDER. ╥╙┼╠ CONTROLS THE NUMBER OF ROWS ("1" FOR 25 ROWS) AND ├╙┼╠
  604. CONTROLS THE NUMBER OF COLUMNS ("1" FOR 40 COLUMNS).
  605.  
  606. ╘HE DISPLAY DATA MAY BE SCROLLED UP TO ONE CHARACTER SPACE IN BOTH VERTICAL
  607. AND HORIZONTAL DIRECTION. ╨OSITION OF THE SCREEN IS SET WITH THE 3 LOWEST
  608. ORDER (LEAST SIGNIFICANT) BITS IN REGISTERS 22 ($16) AND 17 ($11).
  609.  
  610. ╠IGHT PEN LATCH IS USED TO CATCH THE POSITION OF THE LIGHT PEN WHEN A PULSE
  611. IS RECEIVED IN THE ╠╨ PIN. ╘HE VALUE IS LATCHED ONLY ONCE IN A FRAME.
  612.  
  613. ╘HE RASTER REGISTER IS A DUAL-FUNCTION REGISTER. ┴ READ FROM THE RASTER
  614. REGISTER RETURNS THE CURRENT RASTER POSITION AND A WRITE TO IT WILL SET THE
  615. RASTER COMPARE VALUE. ╫HEN THE WRITTEN VALUE AND THE CURRENT RASTER LINE
  616. MATCHES, A RASTER INTERRUPT IS GENERATED IF ENABLED. ╥ASTER REGISTER HAS ITS
  617. MOST SIGNIFICANT (9TH) BIT IN REGISTER 17 ($11).
  618.  
  619. ╘HE INTERRUPT REGISTER SHOWS THE STATUS OF THE FOUR SOURCES OF INTERRUPT.
  620. ┴ CORRESPONDING BIT WILL BE SET TO "1" WHEN AN INTERRUPT SOURCE HAS GENERATED
  621. AN INTERRUPT REQUEST. ╘O ENABLE AN INTERRUPT REQUEST TO SET THE /╔╥╤ OUTPUT
  622. TO ZERO, THE CORRESPONDING ENABLE BIT IN REGISTER 26 ($1A) MUST BE SET TO
  623. "1". ╘HE INTERRUPT LATCH MAY ONLY BE CLEARED BY WRITING A "1" TO THE
  624. DESIRED LATCH IN THE INTERRUPT REGISTER.
  625.  
  626. -----------------------------------------------------------------------------
  627. ╓╔├ REGISTER MAP (┬ASE ADDRESS $D000)
  628.  
  629. ┴DDRESS ─┬7   ─┬6   ─┬5   ─┬4   ─┬3   ─┬2   ─┬1   ─┬0   ─ESCRIPTION
  630. -------------------------------------------------------------------
  631. 00 $00  ═0╪7  ═0╪6  ═0╪5  ═0╪4  ═0╪3  ═0╪2  ═0╪1  ═0╪0  ═╧┬ 0 ╪-POSITION
  632. 01 $01  ═0┘7  ═0┘6  ═0┘5  ═0┘4  ═0┘3  ═0┘2  ═0┘1  ═0┘0  ═╧┬ 0 ┘-POSITION
  633. 02 $02  ═1╪7  ═1╪6  ═1╪5  ═1╪4  ═1╪3  ═1╪2  ═1╪1  ═1╪0  ═╧┬ 1 ╪-POSITION
  634. 03 $03  ═1┘7  ═1┘6  ═1┘5  ═1┘4  ═1┘3  ═1┘2  ═1┘1  ═1┘0  ═╧┬ 1 ┘-POSITION
  635. 04 $04  ═2╪7  ═2╪6  ═2╪5  ═2╪4  ═2╪3  ═2╪2  ═2╪1  ═2╪0  ═╧┬ 2 ╪-POSITION
  636. 05 $05  ═2┘7  ═2┘6  ═2┘5  ═2┘4  ═2┘3  ═2┘2  ═2┘1  ═2┘0  ═╧┬ 2 ┘-POSITION
  637. 06 $06  ═3╪7  ═3╪6  ═3╪5  ═3╪4  ═3╪3  ═3╪2  ═3╪1  ═3╪0  ═╧┬ 3 ╪-POSITION
  638. 07 $07  ═3┘7  ═3┘6  ═3┘5  ═3┘4  ═3┘3  ═3┘2  ═3┘1  ═3┘0  ═╧┬ 3 ┘-POSITION
  639. 08 $08  ═4╪7  ═4╪6  ═4╪5  ═4╪4  ═4╪3  ═4╪2  ═4╪1  ═4╪0  ═╧┬ 4 ╪-POSITION
  640. 09 $09  ═4┘7  ═4┘6  ═4┘5  ═4┘4  ═4┘3  ═4┘2  ═4┘1  ═4┘0  ═╧┬ 4 ┘-POSITION
  641. 10 $0A  ═5╪7  ═5╪6  ═5╪5  ═5╪4  ═5╪3  ═5╪2  ═5╪1  ═5╪0  ═╧┬ 5 ╪-POSITION
  642. 11 $0B  ═5┘7  ═5┘6  ═5┘5  ═5┘4  ═5┘3  ═5┘2  ═5┘1  ═5┘0  ═╧┬ 5 ┘-POSITION
  643. 12 $0C  ═6╪7  ═6╪6  ═6╪5  ═6╪4  ═6╪3  ═6╪2  ═6╪1  ═6╪0  ═╧┬ 6 ╪-POSITION
  644. 13 $0D  ═6┘7  ═6┘6  ═6┘5  ═6┘4  ═6┘3  ═6┘2  ═6┘1  ═6┘0  ═╧┬ 6 ┘-POSITION
  645. 14 $0E  ═7╪7  ═7╪6  ═7╪5  ═7╪4  ═7╪3  ═7╪2  ═7╪1  ═7╪0  ═╧┬ 7 ╪-POSITION
  646. 15 $0F  ═7┘7  ═7┘6  ═7┘5  ═7┘4  ═7┘3  ═7┘2  ═7┘1  ═7┘0  ═╧┬ 7 ┘-POSITION
  647. 16 $10  ═7╪8  ═6╪8  ═5╪8  ═4╪8  ═3╪8  ═2╪8  ═1╪8  ═0╪8  ═╙┬ OF ╪-POSITION
  648. 17 $11  ╥├8   ┼├═   ┬══   ─┼╬   ╥╙┼╠  ┘2    ┘1    ┘0    (╙EE TEXT)
  649. 18 $12  ╥├7   ╥├6   ╥├5   ╥├4   ╥├3   ╥├2   ╥├1   ╥├0   ╥ASTER REGISTER
  650. 19 $13  ╠╨╪8  ╠╨╪7  ╠╨╪6  ╠╨╪5  ╠╨╪4  ╠╨╪3  ╠╨╪2  ╠╨╪1  ╠IGHT ╨EN ╪
  651. 20 $14  ╠╨┘7  ╠╨┘6  ╠╨┘5  ╠╨┘4  ╠╨┘3  ╠╨┘2  ╠╨┘1  ╠╨┘0  ╠IGHT ╨EN ┘
  652. 21 $15  ═7┼   ═6┼   ═5┼   ═4┼   ═3┼   ═2┼   ═1┼   ═0┼   ═╧┬ ┼NABLE
  653. 22 $16  -     -     ╥┼╙   ═├═   ├╙┼╠  ╪2    ╪1    ╪0    (╙EE TEXT)
  654. 23 $17  ═7┘┼  ═6┘┼  ═5┘┼  ═4┘┼  ═3┘┼  ═2┘┼  ═1┘┼  ═0┘┼  ═╧┬ ┘-EXPAND
  655. -- 
  656.  
  657. - ├RAIG ╘AYLOR   ⁿⁿ ╙TANDARD ─ISCLAIMER ┴PPLIES (OF COURSE!)
  658. DUCK@PEMBVAX1.PEMBROKE.EDU (╨EMBROKE ╙TATE ╒NIVERSITY)
  659.  
  660. ╧REGON, N.:
  661.         ┼IGHTY BILLION GALLONS OF WATER WITH NO PLACE TO GO ON ╙ATURDAY
  662.         NIGHT.
  663. ┼ND OF ╞ILE, ╨RESS ╥┼╘╒╥╬ TO QUIT┴RTICLE #10123 (10178 IS LAST):
  664. ╞ROM: DUCK@PEMBVAX1.PEMBROKE.EDU
  665. ╬EWSGROUPS: COMP.SYS.CBM
  666. ╙UBJECT: ├= ╚ACKING ╔SSUE #4 3/5
  667. ─ATE: ═ON ╧CT  5 10:01:45 1992
  668.  
  669. 24 $18  ╓═13  ╓═12  ╓═11  ╓═10  ├┬13  ├┬12  ├┬11  -     ═EMORY ╨OINTERS
  670. 25 $19  ╔╥╤   -     -     -     ╔╠╨   ╔══├  ╔═┬├  ╔╥╙╘  ╔NTERRUPT ╥EGISTER
  671. 26 $1A  -     -     -     -     ┼╠╨   ┼══├  ┼═┬├  ┼╥╙╘  ┼NABLE ╔NTERRUPT
  672. 27 $1B  ═7─╨  ═6─╨  ═5─╨  ═4─╨  ═3─╨  ═2─╨  ═1─╨  ═0─╨  ═╧┬-─┴╘┴ ╨RIORITY
  673. 28 $1C  ═7═├  ═6═├  ═5═├  ═4═├  ═3═├  ═2═├  ═1═├  ═0═├  ═╧┬ ═ULTICOLOR SELECT
  674. 29 $1D  ═7╪┼  ═6╪┼  ═5╪┼  ═4╪┼  ═3╪┼  ═2╪┼  ═1╪┼  ═0╪┼  ═╧┬ ╪-┼XPAND
  675. 30 $1E  ═7═   ═6═   ═5═   ═4═   ═3═   ═2═   ═1═   ═0═   ═╧┬-═╧┬  ├OLLISION
  676. 31 $1F  ═7─   ═6─   ═5─   ═4─   ═3─   ═2─   ═1─   ═0─   ═╧┬-─┴╘┴ ├OLLISION
  677. 32 $20  -     -     -     -     ┼├3   ┼├2   ┼├1   ┼├0   ┼XTERIOR ├OLOR
  678. 33 $21  -     -     -     -     ┬0├3  ┬0├2  ┬0├1  ┬0├0  ┬ACKGROUND #0 ├OLOR
  679. 34 $22  -     -     -     -     ┬1├3  ┬1├2  ┬1├1  ┬1├0  ┬ACKGROUND #1 ├OLOR
  680. 35 $23  -     -     -     -     ┬2├3  ┬2├2  ┬2├1  ┬2├0  ┬ACKGROUND #2 ├OLOR
  681. 36 $24  -     -     -     -     ┬3├3  ┬3├2  ┬3├1  ┬3├0  ┬ACKGROUND #3 ├OLOR
  682. 37 $25  -     -     -     -     ══03  ══02  ══01  ══00  ═╧┬ ═ULTICOLOR #0
  683. 38 $26  -     -     -     -     ══13  ══12  ══11  ══10  ═╧┬ ═ULTICOLOR #1
  684. 39 $27  -     -     -     -     ═0├3  ═0├2  ═0├1  ═0├0  ═╧┬ 0 ├OLOR
  685. 40 $28  -     -     -     -     ═1├3  ═1├2  ═1├1  ═1├0  ═╧┬ 1 ├OLOR
  686. 41 $29  -     -     -     -     ═2├3  ═2├2  ═2├1  ═2├0  ═╧┬ 2 ├OLOR
  687. 42 $2A  -     -     -     -     ═3├3  ═3├2  ═3├1  ═3├0  ═╧┬ 3 ├OLOR
  688. 43 $2B  -     -     -     -     ═4├3  ═4├2  ═4├1  ═4├0  ═╧┬ 4 ├OLOR
  689. 44 $2C  -     -     -     -     ═5├3  ═5├2  ═5├1  ═5├0  ═╧┬ 5 ├OLOR
  690. 45 $2D  -     -     -     -     ═6├3  ═6├2  ═6├1  ═6├0  ═╧┬ 6 ├OLOR
  691. 46 $2E  -     -     -     -     ═7├3  ═7├2  ═7├1  ═7├0  ═╧┬ 7 ├OLOR
  692.  
  693. ═N╪  = ═╧┬ N ╪ POSITION         ═N┘  = ═╧┬ N ┘ POSITION
  694. ╥├   = ╥ASTER COMPARE REGISTER  ┼├═  = ┼XTENDED COLOR MODE
  695. ═┬┬  = ┬IT MAP MODE             ─┼╬  = ─ISPLAY ENABLE
  696. ╥╙┼╠ = ╥OW SELECT               ┘    = ╙CREEN ┘ POSITION
  697. ╠╨╪  = ╠IGHT PEN ╪ POSITION     ╠╨┘  = ╠IGHT PEN ┘ POSITION
  698. ═N┼  = ═╧┬ N ┼NABLE             ╥┼╙  = ┴LWAYS SET TO ZERO!
  699. ═├═  = ═ULTICOLOR MODE          ├╙┼╠ = ├OLUMN SELECT
  700. ╪    = ╙CREEN ╪ POSITION        ═N┘┼ = ═╧┬ N ┘ EXPAND
  701. ╓═   = ╓IDEO MATRIX POINTER     ├┬   = ├HARACTER BASE POINTER
  702. ═N─╨ = ═╧┬ TO DATA PRIORITY     ═N═├ = ═╧┬ N MULTICOLOR SELECT
  703. ═N╪┼ = ═╧┬ N ╪ EXPAND
  704.  
  705.